#include <gtest/gtest.h>
#include "utils/utils.h"

TEST(test_utils, test_utils_createProcess)
{
    std::string process = "/bin/ls";
//    std::string argv = "-s";
    std::string argv = "";

    pid_t pid;
    auto res = Utils::createProcess(&pid, process, argv, true);
    if (res.res != 0)
    {
        printf("create process fail, res: %d, err: %s\n", res.res, res.errDesc.c_str());
    }
    else
    {
        printf("create process pass, pid: %d\n", pid);
    }
    while (true)
    {
    }
}

TEST(test_utils, test_utils_isBool)
{
    ASSERT_EQ(Utils::isBool("true"), true);
    ASSERT_EQ(Utils::isBool("false"), true);
    ASSERT_EQ(Utils::isBool("fals"), false);
    ASSERT_EQ(Utils::isBool("tru"), false);
    ASSERT_EQ(Utils::isBool("-1"), false);
    ASSERT_EQ(Utils::isBool("0"), false);
    ASSERT_EQ(Utils::isBool("1"), false);
    ASSERT_EQ(Utils::isBool("1.23"), false);
}
TEST(test_utils, test_utils_isDouble)
{
    ASSERT_EQ(Utils::isDouble("true"), false);
    ASSERT_EQ(Utils::isDouble("false"), false);
    ASSERT_EQ(Utils::isDouble("3"), false);
    ASSERT_EQ(Utils::isDouble("345"), false);
    ASSERT_EQ(Utils::isDouble("0"), false);
    ASSERT_EQ(Utils::isDouble("0.2.1"), false);
    ASSERT_EQ(Utils::isDouble("0.2.1.9"), false);
    ASSERT_EQ(Utils::isDouble("0.2"), true);
    ASSERT_EQ(Utils::isDouble("0.234"), true);
    ASSERT_EQ(Utils::isDouble("0.981"), true);
}
TEST(test_utils, test_utils_isInt)
{
    ASSERT_EQ(Utils::isInt("true"), false);
    ASSERT_EQ(Utils::isInt("false"), false);
    ASSERT_EQ(Utils::isInt("3"), true);
    ASSERT_EQ(Utils::isInt("345"), true);
    ASSERT_EQ(Utils::isInt("0"), true);
}
